package com.xcm.dao;

import com.github.pagehelper.Page;
import com.xcm.model.SysUser;
import com.xcm.model.vo.SysUserVo;
import com.xcm.model.UserRole;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 用户Mapper
 *
 * @author linqiang
 * @date 2018-04-13 9:15
 */
public interface SysUserMapper extends BaseMapper<SysUser> {

    /**
     * 用户登陆
     *
     * @param userName 用户名
     * @param password 密码
     * @return
     */
    SysUserVo loginVo(@Param("userName") String userName, @Param("password") String password);

    /**
     * 用户登陆
     *
     * @param userName 用户名
     * @param password 密码
     * @return
     */
    SysUser login(@Param("userName") String userName, @Param("password") String password);

    /**
     * 查询集合
     *
     * @param paramMap 参数map
     * @return
     */
    List<SysUserVo> list(Map<String, Object> paramMap);

    /**
     * 用户列表分页
     *
     * @param paramMap 参数
     * @return
     */
    Page<SysUserVo> listPage(Map<String, Object> paramMap);

    /**
     * 根据用户名查询用户
     *
     * @param userName 用户名
     * @return
     */
    SysUser getByUsername(@Param("userName") String userName);

    /**
     * 根据用户名获取用户VO
     *
     * @param userName
     * @return
     */
    SysUserVo getByUsernameVo(@Param("userName") String userName);

    /**
     * 根据用户id查询VO
     *
     * @param userId
     * @return
     */
    SysUserVo getByIdVo(@Param("userId") Integer userId);

    /**
     * 听启用用户
     *
     * @param paramMap
     */
    int setEnableOrDisable(Map<String, Object> paramMap);

    /**
     * 新增并返回带id
     *
     * @param sysUser
     * @return
     */
    int saveAndGetId(SysUser sysUser);

    /**
     * 设置用户启用或停用（批量）
     *
     * @param able       1启用，0停用
     * @param userIdList 用户id数组
     */
    int setEnableOrDisableBatch(@Param("able") String able, @Param("userIdList") List<Integer> userIdList);

    /**
     * 修改密码
     *
     * @param userId      用户id
     * @param newPassword 新密码
     * @return
     */
    int changePassword(@Param("userId") Integer userId, @Param("newPassword") String newPassword);

}
